package georeduy.dao;

import java.util.List;

import georeduy.clases.Empresa;
import georeduy.clases.Oferta;
import georeduy.clases.Usuario;
import georeduy.dao.interfaces.IOfertaDAO;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

@Stateless(name = "OfertaDAO", mappedName = "GeoRed.uy-GeoRed.uy-JPA-OfertaDAO")
public class OfertaDAO implements  IOfertaDAO
{
    @PersistenceContext(unitName="Geored.uy-JPA")
    private EntityManager em;
 
    public OfertaDAO() { }

    public Object queryByRange(String jpqlStmt, int firstResult,
                               int maxResults) {
        Query query = em.createQuery(jpqlStmt);
        if (firstResult > 0) {
            query = query.setFirstResult(firstResult);
        }
        if (maxResults > 0) {
            query = query.setMaxResults(maxResults);
        }

        return query.getResultList();
    }

 
    public Oferta persistOferta(Oferta oferta) {
        em.persist(oferta);
        return oferta;}


    public Oferta mergeOferta(Oferta oferta) {
        return em.merge(oferta);}

    public void removeOferta(int id) {
        Oferta oferta = em.find(Oferta.class, id);
        em.remove(oferta); }

	@Override
	public Oferta findOferta(int id) {
		return em.find(Oferta.class, id);
	}
	public Oferta findByName(String name) {
		Query q = em.createQuery("SELECT u FROM Oferta u WHERE u.nombre = :nombre1");
		q.setParameter("nombre1", name);
		return (Oferta) q.getSingleResult();
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Oferta> ListarOfertas(String empresa)
	{		 
		String consulta = "SELECT o FROM Oferta o JOIN o.local l WHERE l.empresa = :empresa";		
		Query q = em.createQuery(consulta);
		Empresa e = em.find(Empresa.class, empresa);
		q.setParameter("empresa", e);
		return q.getResultList();
	}

}
